home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Magazine / GraphicsCards / StormMesa / include / GL / glut.h < prev    next >
C/C++ Source or Header  |  1998-12-15  |  22KB  |  617 lines

  1. #ifndef __glut_h__
  2. #define __glut_h__
  3.  
  4. /* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
  5.  
  6. /* This program is freely distributable without licensing fees  and is
  7.    provided without guarantee or warrantee expressed or  implied. This
  8.    program is -not- in the public domain. */
  9.  
  10. #if defined(_WIN32)
  11.  
  12. /* GLUT 3.7 now tries to avoid including <windows.h>
  13.    to avoid name space pollution, but Win32's <GL/gl.h>
  14.    needs APIENTRY and WINGDIAPI defined properly. */
  15. #if 1
  16. #    define  WIN32_LEAN_AND_MEAN
  17. #    include <windows.h>
  18. #else
  19.    /* XXX This is from Win32's <windef.h> */
  20. #    ifndef CDECL
  21. #        define CDECL __cdecl
  22. #    endif
  23.    /* XXX This is from Win32's <windef.h> */
  24. #    ifndef APIENTRY
  25. #        define GLUT_APIENTRY_DEFINED
  26. #        if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
  27. #            define APIENTRY    __stdcall
  28. #        else
  29. #            define APIENTRY    __cdecl
  30. #        endif
  31. #    endif
  32.    /* XXX This is from Win32's <winnt.h> */
  33. #    ifndef CALLBACK
  34. #        if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
  35. #            define CALLBACK __stdcall
  36. #        else
  37. #            define CALLBACK __cdecl
  38. #        endif
  39. #    endif
  40.    /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
  41. #    ifndef WINGDIAPI
  42. #        define GLUT_WINGDIAPI_DEFINED
  43. #        define WINGDIAPI __declspec(dllimport)
  44. #    endif
  45.    /* XXX This is from Win32's <ctype.h> */
  46. #    ifndef _WCHAR_T_DEFINED
  47. typedef unsigned short wchar_t;
  48. #        define _WCHAR_T_DEFINED
  49. #    endif
  50. #endif /* 0 */
  51.  
  52. #define GLUTCALLBACK __cdecl
  53.  
  54. #if defined(BUILD_GLUT32)
  55. #    define GLUTAPI __declspec(dllexport)
  56. #elif defined(_DLL)
  57. #    define GLUTAPI __declspec(dllimport)
  58. #else
  59. #    define GLUTAPI extern
  60. #endif
  61.  
  62. #pragma warning (disable:4244)    /* Disable bogus conversion warnings. */
  63. #pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
  64.  
  65. #else /* define APIENTRY and CALLBACK to null string if we aren't on Win32 */
  66.  
  67. #define CDECL
  68. #define APIENTRY
  69. #define GLUT_APIENTRY_DEFINED
  70. #define CALLBACK
  71. #define GLUTCALLBACK
  72. #define GLUTAPI extern
  73.  
  74. #endif /* WIN32 build */
  75.  
  76. #include <GL/gl.h>
  77. #include <GL/glu.h>
  78.  
  79. #ifdef __cplusplus
  80. extern "C" {
  81. #endif
  82.  
  83. /**
  84.  GLUT API revision history:
  85.  
  86.  GLUT_API_VERSION is updated to reflect incompatible GLUT
  87.  API changes (interface changes, semantic changes, deletions,
  88.  or additions).
  89.  
  90.  GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
  91.  
  92.  GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
  93.  extension.  Supports new input devices like tablet, dial and button
  94.  box, and Spaceball.  Easy to query OpenGL extensions.
  95.  
  96.  GLUT_API_VERSION=3  glutMenuStatus added.
  97.  
  98.  GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
  99.  glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
  100.  video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
  101.  glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
  102.  glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
  103. **/
  104. #ifndef GLUT_API_VERSION  /* allow this to be overriden */
  105. #define GLUT_API_VERSION        3
  106. #endif
  107.  
  108. /**
  109.  GLUT implementation revision history:
  110.  
  111.  GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
  112.  API revisions and implementation revisions (ie, bug fixes).
  113.  
  114.  GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
  115.  GLUT Xlib-based implementation.  11/29/94
  116.  
  117.  GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
  118.  GLUT Xlib-based implementation providing GLUT version 2
  119.  interfaces.
  120.  
  121.  GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
  122.  
  123.  GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
  124.  
  125.  GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
  126.  
  127.  GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
  128.  
  129.  GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
  130.  and video resize.  1/3/97
  131.  
  132.  GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
  133.  
  134.  GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
  135.  
  136.  GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
  137.  
  138.  GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 release with GameGLUT support.
  139. **/
  140. #ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
  141. #define GLUT_XLIB_IMPLEMENTATION    13
  142. #endif
  143.  
  144. /* Display mode bit masks. */
  145. #define GLUT_RGB            0
  146. #define GLUT_RGBA            GLUT_RGB
  147. #define GLUT_INDEX            1
  148. #define GLUT_SINGLE            0
  149. #define GLUT_DOUBLE            2
  150. #define GLUT_ACCUM            4
  151. #define GLUT_ALPHA            8
  152. #define GLUT_DEPTH            16
  153. #define GLUT_STENCIL            32
  154. #if (GLUT_API_VERSION >= 2)
  155. #define GLUT_MULTISAMPLE        128
  156. #define GLUT_STEREO            256
  157. #endif
  158. #if (GLUT_API_VERSION >= 3)
  159. #define GLUT_LUMINANCE            512
  160. #endif
  161.  
  162. /* Mouse buttons. */
  163. #define GLUT_LEFT_BUTTON        0
  164. #define GLUT_MIDDLE_BUTTON        1
  165. #define GLUT_RIGHT_BUTTON        2
  166.  
  167. /* Mouse button  state. */
  168. #define GLUT_DOWN            0
  169. #define GLUT_UP                1
  170.  
  171. #if (GLUT_API_VERSION >= 2)
  172. /* function keys */
  173. #define GLUT_KEY_F1            1
  174. #define GLUT_KEY_F2            2
  175. #define GLUT_KEY_F3            3
  176. #define GLUT_KEY_F4            4
  177. #define GLUT_KEY_F5            5
  178. #define GLUT_KEY_F6            6
  179. #define GLUT_KEY_F7            7
  180. #define GLUT_KEY_F8            8
  181. #define GLUT_KEY_F9            9
  182. #define GLUT_KEY_F10            10
  183. #define GLUT_KEY_F11            11
  184. #define GLUT_KEY_F12            12
  185. /* directional keys */
  186. #define GLUT_KEY_LEFT            100
  187. #define GLUT_KEY_UP            101
  188. #define GLUT_KEY_RIGHT            102
  189. #define GLUT_KEY_DOWN            103
  190. #define GLUT_KEY_PAGE_UP        104
  191. #define GLUT_KEY_PAGE_DOWN        105
  192. #define GLUT_KEY_HOME            106
  193. #define GLUT_KEY_END            107
  194. #define GLUT_KEY_INSERT            108
  195. #endif
  196.  
  197. /* Entry/exit  state. */
  198. #define GLUT_LEFT            0
  199. #define GLUT_ENTERED            1
  200.  
  201. /* Menu usage  state. */
  202. #define GLUT_MENU_NOT_IN_USE        0
  203. #define GLUT_MENU_IN_USE        1
  204.  
  205. /* Visibility  state. */
  206. #define GLUT_NOT_VISIBLE        0
  207. #define GLUT_VISIBLE            1
  208.  
  209. /* Window status  state. */
  210. #define GLUT_HIDDEN            0
  211. #define GLUT_FULLY_RETAINED        1
  212. #define GLUT_PARTIALLY_RETAINED        2
  213. #define GLUT_FULLY_COVERED        3
  214.  
  215. /* Color index component selection values. */
  216. #define GLUT_RED            0
  217. #define GLUT_GREEN            1
  218. #define GLUT_BLUE            2
  219.  
  220. /* Layers for use. */
  221. #define GLUT_NORMAL            0
  222. #define GLUT_OVERLAY            1
  223.  
  224. #if defined(_WIN32)
  225. /* Stroke font constants (use these in GLUT program). */
  226. #define GLUT_STROKE_ROMAN        ((void*)0)
  227. #define GLUT_STROKE_MONO_ROMAN        ((void*)1)
  228.  
  229. /* Bitmap font constants (use these in GLUT program). */
  230. #define GLUT_BITMAP_9_BY_15        ((void*)2)
  231. #define GLUT_BITMAP_8_BY_13        ((void*)3)
  232. #define GLUT_BITMAP_TIMES_ROMAN_10    ((void*)4)
  233. #define GLUT_BITMAP_TIMES_ROMAN_24    ((void*)5)
  234. #if (GLUT_API_VERSION >= 3)
  235. #define GLUT_BITMAP_HELVETICA_10    ((void*)6)
  236. #define GLUT_BITMAP_HELVETICA_12    ((void*)7)
  237. #define GLUT_BITMAP_HELVETICA_18    ((void*)8)
  238. #endif
  239. #else
  240. /* Stroke font opaque addresses (use constants instead in source code). */
  241. GLUTAPI void *glutStrokeRoman;
  242. GLUTAPI void *glutStrokeMonoRoman;
  243.  
  244. /* Stroke font constants (use these in GLUT program). */
  245. #define GLUT_STROKE_ROMAN        (&glutStrokeRoman)
  246. #define GLUT_STROKE_MONO_ROMAN        (&glutStrokeMonoRoman)
  247.  
  248. /* Bitmap font opaque addresses (use constants instead in source code). */
  249. GLUTAPI void *glutBitmap9By15;
  250. GLUTAPI void *glutBitmap8By13;
  251. GLUTAPI void *glutBitmapTimesRoman10;
  252. GLUTAPI void *glutBitmapTimesRoman24;
  253. GLUTAPI void *glutBitmapHelvetica10;
  254. GLUTAPI void *glutBitmapHelvetica12;
  255. GLUTAPI void *glutBitmapHelvetica18;
  256.  
  257. /* Bitmap font constants (use these in GLUT program). */
  258. #define GLUT_BITMAP_9_BY_15        (&glutBitmap9By15)
  259. #define GLUT_BITMAP_8_BY_13        (&glutBitmap8By13)
  260. #define GLUT_BITMAP_TIMES_ROMAN_10    (&glutBitmapTimesRoman10)
  261. #define GLUT_BITMAP_TIMES_ROMAN_24    (&glutBitmapTimesRoman24)
  262. #if (GLUT_API_VERSION >= 3)
  263. #define GLUT_BITMAP_HELVETICA_10    (&glutBitmapHelvetica10)
  264. #define GLUT_BITMAP_HELVETICA_12    (&glutBitmapHelvetica12)
  265. #define GLUT_BITMAP_HELVETICA_18    (&glutBitmapHelvetica18)
  266. #endif
  267. #endif
  268.  
  269. /* glutGet parameters. */
  270. #define GLUT_WINDOW_X            100
  271. #define GLUT_WINDOW_Y            101
  272. #define GLUT_WINDOW_WIDTH        102
  273. #define GLUT_WINDOW_HEIGHT        103
  274. #define GLUT_WINDOW_BUFFER_SIZE        104
  275. #define GLUT_WINDOW_STENCIL_SIZE    105
  276. #define GLUT_WINDOW_DEPTH_SIZE        106
  277. #define GLUT_WINDOW_RED_SIZE        107
  278. #define GLUT_WINDOW_GREEN_SIZE        108
  279. #define GLUT_WINDOW_BLUE_SIZE        109
  280. #define GLUT_WINDOW_ALPHA_SIZE        110
  281. #define GLUT_WINDOW_ACCUM_RED_SIZE    111
  282. #define GLUT_WINDOW_ACCUM_GREEN_SIZE    112
  283. #define GLUT_WINDOW_ACCUM_BLUE_SIZE    113
  284. #define GLUT_WINDOW_ACCUM_ALPHA_SIZE    114
  285. #define GLUT_WINDOW_DOUBLEBUFFER    115
  286. #define GLUT_WINDOW_RGBA        116
  287. #define GLUT_WINDOW_PARENT        117
  288. #define GLUT_WINDOW_NUM_CHILDREN    118
  289. #define GLUT_WINDOW_COLORMAP_SIZE    119
  290. #if (GLUT_API_VERSION >= 2)
  291. #define GLUT_WINDOW_NUM_SAMPLES        120
  292. #define GLUT_WINDOW_STEREO        121
  293. #endif
  294. #if (GLUT_API_VERSION >= 3)
  295. #define GLUT_WINDOW_CURSOR        122
  296. #endif
  297. #define GLUT_SCREEN_WIDTH        200
  298. #define GLUT_SCREEN_HEIGHT        201
  299. #define GLUT_SCREEN_WIDTH_MM        202
  300. #define GLUT_SCREEN_HEIGHT_MM        203
  301. #define GLUT_MENU_NUM_ITEMS        300
  302. #define GLUT_DISPLAY_MODE_POSSIBLE    400
  303. #define GLUT_INIT_WINDOW_X        500
  304. #define GLUT_INIT_WINDOW_Y        501
  305. #define GLUT_INIT_WINDOW_WIDTH        502
  306. #define GLUT_INIT_WINDOW_HEIGHT        503
  307. #define GLUT_INIT_DISPLAY_MODE        504
  308. #if (GLUT_API_VERSION >= 2)
  309. #define GLUT_ELAPSED_TIME        700
  310. #endif
  311. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  312. #define GLUT_WINDOW_FORMAT_ID        123
  313. #endif
  314.  
  315. #if (GLUT_API_VERSION >= 2)
  316. /* glutDeviceGet parameters. */
  317. #define GLUT_HAS_KEYBOARD        600
  318. #define GLUT_HAS_MOUSE            601
  319. #define GLUT_HAS_SPACEBALL        602
  320. #define GLUT_HAS_DIAL_AND_BUTTON_BOX    603
  321. #define GLUT_HAS_TABLET            604
  322. #define GLUT_NUM_MOUSE_BUTTONS        605
  323. #define GLUT_NUM_SPACEBALL_BUTTONS    606
  324. #define GLUT_NUM_BUTTON_BOX_BUTTONS    607
  325. #define GLUT_NUM_DIALS            608
  326. #define GLUT_NUM_TABLET_BUTTONS        609
  327. #endif
  328. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  329. #define GLUT_DEVICE_IGNORE_KEY_REPEAT   610
  330. #define GLUT_DEVICE_KEY_REPEAT          611
  331. #define GLUT_HAS_JOYSTICK        612
  332. #define GLUT_OWNS_JOYSTICK        613
  333. #define GLUT_JOYSTICK_BUTTONS        614
  334. #define GLUT_JOYSTICK_AXES        615
  335. #define GLUT_JOYSTICK_POLL_RATE        616
  336. #endif
  337.  
  338. #if (GLUT_API_VERSION >= 3)
  339. /* glutLayerGet parameters. */
  340. #define GLUT_OVERLAY_POSSIBLE           800
  341. #define GLUT_LAYER_IN_USE        801
  342. #define GLUT_HAS_OVERLAY        802
  343. #define GLUT_TRANSPARENT_INDEX        803
  344. #define GLUT_NORMAL_DAMAGED        804
  345. #define GLUT_OVERLAY_DAMAGED        805
  346.  
  347. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  348. /* glutVideoResizeGet parameters. */
  349. #define GLUT_VIDEO_RESIZE_POSSIBLE    900
  350. #define GLUT_VIDEO_RESIZE_IN_USE    901
  351. #define GLUT_VIDEO_RESIZE_X_DELTA    902
  352. #define GLUT_VIDEO_RESIZE_Y_DELTA    903
  353. #define GLUT_VIDEO_RESIZE_WIDTH_DELTA    904
  354. #define GLUT_VIDEO_RESIZE_HEIGHT_DELTA    905
  355. #define GLUT_VIDEO_RESIZE_X        906
  356. #define GLUT_VIDEO_RESIZE_Y        907
  357. #define GLUT_VIDEO_RESIZE_WIDTH        908
  358. #define GLUT_VIDEO_RESIZE_HEIGHT    909
  359. #endif
  360.  
  361. /* glutUseLayer parameters. */
  362. #define GLUT_NORMAL            0
  363. #define GLUT_OVERLAY            1
  364.  
  365. /* glutGetModifiers return mask. */
  366. #define GLUT_ACTIVE_SHIFT               1
  367. #define GLUT_ACTIVE_CTRL                2
  368. #define GLUT_ACTIVE_ALT                 4
  369.  
  370. /* glutSetCursor parameters. */
  371. /* Basic arrows. */
  372. #define GLUT_CURSOR_RIGHT_ARROW        0
  373. #define GLUT_CURSOR_LEFT_ARROW        1
  374. /* Symbolic cursor shapes. */
  375. #define GLUT_CURSOR_INFO        2
  376. #define GLUT_CURSOR_DESTROY        3
  377. #define GLUT_CURSOR_HELP        4
  378. #define GLUT_CURSOR_CYCLE        5
  379. #define GLUT_CURSOR_SPRAY        6
  380. #define GLUT_CURSOR_WAIT        7
  381. #define GLUT_CURSOR_TEXT        8
  382. #define GLUT_CURSOR_CROSSHAIR        9
  383. /* Directional cursors. */
  384. #define GLUT_CURSOR_UP_DOWN        10
  385. #define GLUT_CURSOR_LEFT_RIGHT        11
  386. /* Sizing cursors. */
  387. #define GLUT_CURSOR_TOP_SIDE        12
  388. #define GLUT_CURSOR_BOTTOM_SIDE        13
  389. #define GLUT_CURSOR_LEFT_SIDE        14
  390. #define GLUT_CURSOR_RIGHT_SIDE        15
  391. #define GLUT_CURSOR_TOP_LEFT_CORNER    16
  392. #define GLUT_CURSOR_TOP_RIGHT_CORNER    17
  393. #define GLUT_CURSOR_BOTTOM_RIGHT_CORNER    18
  394. #define GLUT_CURSOR_BOTTOM_LEFT_CORNER    19
  395. /* Inherit from parent window. */
  396. #define GLUT_CURSOR_INHERIT        100
  397. /* Blank cursor. */
  398. #define GLUT_CURSOR_NONE        101
  399. /* Fullscreen crosshair (if available). */
  400. #define GLUT_CURSOR_FULL_CROSSHAIR    102
  401. #endif
  402.  
  403. /* GLUT initialization sub-API. */
  404. GLUTAPI void APIENTRY glutInit(int *argcp, char **argv);
  405. GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode);
  406. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  407. GLUTAPI void APIENTRY glutInitDisplayString(const char *string);
  408. #endif
  409. GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y);
  410. GLUTAPI void APIENTRY glutInitWindowSize(int width, int height);
  411. GLUTAPI void APIENTRY glutMainLoop(void);
  412.  
  413. /* GLUT window sub-API. */
  414. GLUTAPI int APIENTRY glutCreateWindow(const char *title);
  415. GLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
  416. GLUTAPI void APIENTRY glutDestroyWindow(int win);
  417. GLUTAPI void APIENTRY glutPostRedisplay(void);
  418. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
  419. GLUTAPI void APIENTRY glutPostWindowRedisplay(int win);
  420. #endif
  421. GLUTAPI void APIENTRY glutSwapBuffers(void);
  422. GLUTAPI int APIENTRY glutGetWindow(void);
  423. GLUTAPI void APIENTRY glutSetWindow(int win);
  424. GLUTAPI void APIENTRY glutSetWindowTitle(const char *title);
  425. GLUTAPI void APIENTRY glutSetIconTitle(const char *title);
  426. GLUTAPI void APIENTRY glutPositionWindow(int x, int y);
  427. GLUTAPI void APIENTRY glutReshapeWindow(int width, int height);
  428. GLUTAPI void APIENTRY glutPopWindow(void);
  429. GLUTAPI void APIENTRY glutPushWindow(void);
  430. GLUTAPI void APIENTRY glutIconifyWindow(void);
  431. GLUTAPI void APIENTRY glutShowWindow(void);
  432. GLUTAPI void APIENTRY glutHideWindow(void);
  433. #if (GLUT_API_VERSION >= 3)
  434. GLUTAPI void APIENTRY glutFullScreen(void);
  435. GLUTAPI void APIENTRY glutSetCursor(int cursor);
  436. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  437. GLUTAPI void APIENTRY glutWarpPointer(int x, int y);
  438. #endif
  439.  
  440. /* GLUT overlay sub-API. */
  441. GLUTAPI void APIENTRY glutEstablishOverlay(void);
  442. GLUTAPI void APIENTRY glutRemoveOverlay(void);
  443. GLUTAPI void APIENTRY glutUseLayer(GLenum layer);
  444. GLUTAPI void APIENTRY glutPostOverlayRedisplay(void);
  445. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
  446. GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win);
  447. #endif
  448. GLUTAPI void APIENTRY glutShowOverlay(void);
  449. GLUTAPI void APIENTRY glutHideOverlay(void);
  450. #endif
  451.  
  452. /* GLUT menu sub-API. */
  453. GLUTAPI int APIENTRY glutCreateMenu(void (GLUTCALLBACK *)(int));
  454. GLUTAPI void APIENTRY glutDestroyMenu(int menu);
  455. GLUTAPI int APIENTRY glutGetMenu(void);
  456. GLUTAPI void APIENTRY glutSetMenu(int menu);
  457. GLUTAPI void APIENTRY glutAddMenuEntry(const char *label, int value);
  458. GLUTAPI void APIENTRY glutAddSubMenu(const char *label, int submenu);
  459. GLUTAPI void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
  460. GLUTAPI void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
  461. GLUTAPI void APIENTRY glutRemoveMenuItem(int item);
  462. GLUTAPI void APIENTRY glutAttachMenu(int button);
  463. GLUTAPI void APIENTRY glutDetachMenu(int button);
  464.  
  465. /* CDECL signature added to function defns for the following series to
  466.  * provide for safe usage when glut is wrapped up in a MS Windows DLL and possible
  467.  * used with builds with other default call sequences. Usage of CDECL call
  468.  * sequence prevents incompatabilities with existing code.
  469.  *
  470.  * -tjump@spgs.com 6/25/98
  471.  */
  472.  
  473. /* GLUT window callback sub-API. */
  474. GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK * func)(void));
  475. GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK * func)(int width, int height));
  476. GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
  477. GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
  478. GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  479. GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  480. GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK * func)(int state));
  481. GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK * func)(int state));
  482. GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK * func)(void));
  483. GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK * func)(int value), int value);
  484. GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK * func)(int state));
  485. #if (GLUT_API_VERSION >= 2)
  486. GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
  487. GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
  488. GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK * func)(int x, int y, int z));
  489. GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK * func)(int button, int state));
  490. GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK * func)(int button, int state));
  491. GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK * func)(int dial, int value));
  492. GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK * func)(int x, int y));
  493. GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK * func)(int button, int state, int x, int y));
  494. #if (GLUT_API_VERSION >= 3)
  495. GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK * func)(int status, int x, int y));
  496. GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK * func)(void));
  497. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  498. GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK * func)(int state));
  499. #endif
  500. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  501. GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK * func)(unsigned char key, int x, int y));
  502. GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK * func)(int key, int x, int y));
  503. GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK * func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
  504. #endif
  505. #endif
  506. #endif
  507.  
  508. /* GLUT color index sub-API. */
  509. GLUTAPI void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
  510. GLUTAPI GLfloat APIENTRY glutGetColor(int ndx, int component);
  511. GLUTAPI void APIENTRY glutCopyColormap(int win);
  512.  
  513. /* GLUT state retrieval sub-API. */
  514. GLUTAPI int APIENTRY glutGet(GLenum type);
  515. GLUTAPI int APIENTRY glutDeviceGet(GLenum type);
  516. #if (GLUT_API_VERSION >= 2)
  517. /* GLUT extension support sub-API */
  518. GLUTAPI int APIENTRY glutExtensionSupported(const char *name);
  519. #endif
  520. #if (GLUT_API_VERSION >= 3)
  521. GLUTAPI int APIENTRY glutGetModifiers(void);
  522. GLUTAPI int APIENTRY glutLayerGet(GLenum type);
  523. #endif
  524.  
  525. /* GLUT font sub-API */
  526. GLUTAPI void APIENTRY glutBitmapCharacter(void *font, int character);
  527. GLUTAPI int APIENTRY glutBitmapWidth(void *font, int character);
  528. GLUTAPI void APIENTRY glutStrokeCharacter(void *font, int character);
  529. GLUTAPI int APIENTRY glutStrokeWidth(void *font, int character);
  530. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  531. GLUTAPI int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
  532. GLUTAPI int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
  533. #endif
  534.  
  535. /* GLUT pre-built models sub-API */
  536. GLUTAPI void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
  537. GLUTAPI void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
  538. GLUTAPI void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  539. GLUTAPI void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  540. GLUTAPI void APIENTRY glutWireCube(GLdouble size);
  541. GLUTAPI void APIENTRY glutSolidCube(GLdouble size);
  542. GLUTAPI void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  543. GLUTAPI void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  544. GLUTAPI void APIENTRY glutWireDodecahedron(void);
  545. GLUTAPI void APIENTRY glutSolidDodecahedron(void);
  546. GLUTAPI void APIENTRY glutWireTeapot(GLdouble size);
  547. GLUTAPI void APIENTRY glutSolidTeapot(GLdouble size);
  548. GLUTAPI void APIENTRY glutWireOctahedron(void);
  549. GLUTAPI void APIENTRY glutSolidOctahedron(void);
  550. GLUTAPI void APIENTRY glutWireTetrahedron(void);
  551. GLUTAPI void APIENTRY glutSolidTetrahedron(void);
  552. GLUTAPI void APIENTRY glutWireIcosahedron(void);
  553. GLUTAPI void APIENTRY glutSolidIcosahedron(void);
  554.  
  555. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  556. /* GLUT video resize sub-API. */
  557. GLUTAPI int APIENTRY glutVideoResizeGet(GLenum param);
  558. GLUTAPI void APIENTRY glutSetupVideoResizing(void);
  559. GLUTAPI void APIENTRY glutStopVideoResizing(void);
  560. GLUTAPI void APIENTRY glutVideoResize(int x, int y, int width, int height);
  561. GLUTAPI void APIENTRY glutVideoPan(int x, int y, int width, int height);
  562.  
  563. /* GLUT debugging sub-API. */
  564. GLUTAPI void APIENTRY glutReportErrors(void);
  565. #endif
  566.  
  567. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
  568. /* GLUT device control sub-API. */
  569. /* glutSetKeyRepeat modes. */
  570. #define GLUT_KEY_REPEAT_OFF        0
  571. #define GLUT_KEY_REPEAT_ON        1
  572. #define GLUT_KEY_REPEAT_DEFAULT        2
  573.  
  574. /* Joystick button masks. */
  575. #define GLUT_JOYSTICK_BUTTON_A        1
  576. #define GLUT_JOYSTICK_BUTTON_B        2
  577. #define GLUT_JOYSTICK_BUTTON_C        4
  578. #define GLUT_JOYSTICK_BUTTON_D        8
  579.  
  580. GLUTAPI void APIENTRY glutIgnoreKeyRepeat(int ignore);
  581. GLUTAPI void APIENTRY glutSetKeyRepeat(int repeatMode);
  582. GLUTAPI void APIENTRY glutForceJoystickFunc(void);
  583.  
  584. /* GLUT game mode sub-API. */
  585. /* glutGameModeGet. */
  586. #define GLUT_GAME_MODE_ACTIVE           0
  587. #define GLUT_GAME_MODE_POSSIBLE         1
  588. #define GLUT_GAME_MODE_WIDTH            2
  589. #define GLUT_GAME_MODE_HEIGHT           3
  590. #define GLUT_GAME_MODE_PIXEL_DEPTH      4
  591. #define GLUT_GAME_MODE_REFRESH_RATE     5
  592. #define GLUT_GAME_MODE_DISPLAY_CHANGED  6
  593.  
  594. GLUTAPI void APIENTRY glutGameModeString(const char *string);
  595. GLUTAPI int APIENTRY glutEnterGameMode(void);
  596. GLUTAPI void APIENTRY glutLeaveGameMode(void);
  597. GLUTAPI int APIENTRY glutGameModeGet(GLenum mode);
  598. #endif
  599.  
  600. #ifdef __cplusplus
  601. }
  602.  
  603. #endif
  604.  
  605. #if !defined(_WIN32)
  606. #    ifdef GLUT_APIENTRY_DEFINED
  607. #        undef GLUT_APIENTRY_DEFINED
  608. #        undef APIENTRY
  609. #    endif
  610. #    ifdef GLUT_WINGDIAPI_DEFINED
  611. #        undef GLUT_WINGDIAPI_DEFINED
  612. #        undef WINGDIAPI
  613. #    endif
  614. #endif
  615.  
  616. #endif                  /* __glut_h__ */
  617.